﻿using System;
using System.Collections.Generic;
using System.Linq;
using NHibernate.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Infra.NHibernateFramework;
using Dominio;
using Infra.Repositorios;

namespace InfraTeste {
    [TestClass]
    public class TesteInicial {
        [TestMethod]
        public void Inicio() {
            using (var session = NHibernateHelper.SessionFactory.OpenSession()) {
                var repositorioDeUsuario = RepositorioFactory.DeUsuario(session);

                var usuario = new Usuario("Teste", "Teste", "1234");
                repositorioDeUsuario.Salvar(usuario);

                var conta = usuario.NovaConta("Cartão");                

                var categoria = usuario.NovaCategoria("Mercado");                
                session.Flush();

                var sub = usuario.NovaCategoria("Sub de Mercado", categoria.Id);
                session.Flush();

                conta.Saca(30m, sub);
                conta.Deposita(20m, categoria);
                conta.AgendaDeposito(30m, DateTime.Now, 3, categoria, TipoContrato.MENSAL);

                var categorias = usuario.Categorias.Where(x => x.Id > 0).ToList();

                session.Flush();
            }
        }

        [TestMethod]
        public void Query_Teste() {
            using (var session = NHibernateHelper.SessionFactory.OpenSession()) {
                var usuario = session.Query<Usuario>().FirstOrDefault();
                var categoria = usuario
                                    .Categorias
                                    .FirstOrDefault();
                var subs = usuario.ObtemSubCategorias(categoria.Id);
            }
        }
    }
}
